package cn.shadow.moulde;

public interface IModuleObjGetter {
    default <T extends ModuleObj> T getModuleObj(int var1) {
        return null;
    }

    default <T extends ModuleObj> T getModuleObj(int moduleId, Class<T> cls) {
        ModuleObj moduleObj = this.getModuleObj(moduleId);
        if (moduleObj == null) {
            return null;
        } else {
            return !cls.isAssignableFrom(moduleObj.getClass()) ? null : (T) moduleObj;
        }
    }

    default <T extends ModuleObj> T getModuleObj(Class<T> var1) {
        return null;
    }

    default <T> T[] getInterfaceArray(Class<T> var1) {
        return null;
    }

    default <T> T[] getInterfaceArray(Class<T> cls, T[] defaultReturn) {
        T[] array = this.getInterfaceArray(cls);
        return array == null ? defaultReturn : array;
    }
}
